/**
 * 包含（4、5、6、7章）
 * __proto__
 *
 * instanceof 的判断规则：
 *  object instanceof constructor
 *  用来检测 constructor.prototype 是否存在于参数 object 的原型链上。[即函数的原型是否存在于对象的原型链上]
 */

function A(){};

A.prototype.name = 'hello';

var a = new A();

console.log(a.name);    //1、hello
console.log(a instanceof A);    //2、true

A.prototype = {};

console.log(a.name);    //3、hello
console.log(a instanceof A);    //4、false

/**
 * 分析：
 *
 * 对象a的原型链为 a.__proto__ ——> A.prototype ——> A.prototype.__proto__ ——> Object.prototype ——> Object.prototype.__proto__ = null
 *
 * 整合代码后得a的原型链为：
 * a.__proto__ ——> {name:'hello'} ——> {name:'hello'}.__proto__ ——> Object.prototype ——> Object.prototype.__proto__ = null
 *
 * 所以对于步骤1、3 name的值都为hello
 * 步骤2、A.prototype 是{name:'hello'} 在a.__proto__原型链上所以true
 * 步骤3、A.prototype 是{} 不在a.__proto__原型链上所以false
 */
